static void
sparql_append_string_literal (GString *sparql,
const gchar *str,
- gboolean glob)
+ gboolean glob,
+ gboolean is_dir_uri)
{
gchar *s;
g_string_append_c (sparql, '"');
g_string_append (sparql, s);
+ if (is_dir_uri)
+ g_string_append_c (sparql, '/');
if (glob)
g_string_append_c (sparql, '*');
g_string_append_c (sparql, '"');
gchar *s;
s = g_utf8_strdown (str, -1);
- sparql_append_string_literal (sparql, s, FALSE);
+ sparql_append_string_literal (sparql, s, FALSE, FALSE);
g_free (s);
}
"WHERE {"
" ?urn a nfo:FileDataObject ;"
" tracker:available true ; ");
+ " nfo:belongsToContainer ?parent; ");
#ifdef FTS_MATCHING
/* Using FTS: */
g_string_append (sparql, "fts:match ");
- sparql_append_string_literal (sparql, search_text, TRUE);
+ sparql_append_string_literal (sparql, search_text, TRUE, FALSE);
#endif
g_string_append (sparql, ". FILTER (BOUND(nie:url(?urn)) && ");
gchar *location_uri = g_file_get_uri (location);
g_string_append (sparql, " && ");
if (recursive)
- g_string_append (sparql, "tracker:uri-is-descendant(");
+ {
+ g_string_append (sparql, "fn:starts-with(nie:url(?urn),");
+ sparql_append_string_literal (sparql, location_uri, FALSE, TRUE);
+ g_string_append (sparql, ")");
+ }
else
- g_string_append (sparql, "tracker:uri-is-parent(");
- sparql_append_string_literal (sparql, location_uri, FALSE);
- g_string_append (sparql, ",nie:url(?urn))");
+ {
+ g_string_append (sparql, "nie:url(?parent) = ");
+ sparql_append_string_literal (sparql, location_uri, FALSE, FALSE);
+ }
g_free (location_uri);
}